package main.java.utils;

//import org.apache.commons.dbcp.BasicDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;


public class DBUtils {
	/*
	 * 属性私有化
	 */
	private static String driver ;
	private static String url ;
	private static String username ;
	private static String password ;
	private static int initSize ;
	private static int maxActive ;
	//private static BasicDataSource ds;
	static{
		//ds = new BasicDataSource();
		Properties cfg = new Properties();
		try {
			//输入流读取db.properties文件
			InputStream in = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");
			//把文件内容读取为散列表
			cfg.load(in);
			//初始化连接参数
			driver = cfg.getProperty("driver");
			System.out.print(driver);
			url = cfg.getProperty("url");
			username = cfg.getProperty("username");
			password  = cfg.getProperty("password");
			initSize = Integer.parseInt(cfg.getProperty("initSize"));
			maxActive = Integer.parseInt(cfg.getProperty("maxActive"));
			//关闭流
			in.close();
			//初始化连接池
			//设置必须的参数
//			ds.setDriverClassName(driver);
//			ds.setUrl(url);
//			ds.setUsername(username);
//			ds.setPassword(password);
//			//设置连接池的管理策略参数
//			ds.setInitialSize(initSize);//初始化连接的长度,因需而定
//			ds.setMaxActive(maxActive);//最大连接数,因需而定
			
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
		System.out.println(cfg);
	}
	/*
	 * 管理数据库连接
	 */
	public static Connection getConnection() {
		try {
			/*
			 * getConnection( )从连接池中获取重用的连接,
			 * 如果连接池满了,则等待.
			 * 如果有连接归还则获取重用的连接
			 */
			Class.forName(driver);
			Connection conn = DriverManager.getConnection(url,"root","root");
			if(conn != null){
				System.out.print("连接成功！！");
			}
			//Connection conn = ds.getConnection();
			return null;
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
		
		
		
	}
	/*
	 * 管理数据关闭(归还连接)
	 */
	public static void close(Connection conn) {
		if(conn!=null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	//回滚事务
	public static void rollback(Connection conn) {
		if(conn!=null){
			try {
				conn.rollback();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
//		DBUtils dbUtils = new DBUtils();
		DBUtils.getConnection();
	}

}
